<?php
// Check to ensure this file is included in Joomla!
defined('_JEXEC') or die( 'Restricted access' );

jimport('joomla.application.component.controller');

class Mwc_EmployeeBoardController extends JController{
    function __construct( $config = array() ){
        parent::__construct( $config );
        
        // Register Extra tasks
        $this->registerTask( 'add',          'edit' );
        //$this->registerTask( 'edit',         'edit' );
        //$this->registerTask( 'save',         'save' );
        $this->registerTask( 'apply',        'save' );
        $this->registerTask( 'unpublish',    'publish' );
    }
    
    /**
     * Show list
     */
    function display(){
        $model    =& $this->getModel( 'Mwc_EmployeeBoard' );
        $view   =& $this->getView( 'Board' );
        $view->setModel( $model, true );
        $view->display();
    }
    
    function edit(){
        $model  =& $this->getModel( 'Mwc_EmployeeBoard' );
        $view   =& $this->getView( 'Board' );
        $view->setModel( $model, true );
        $view->edit();
    }
    
    function save(){     
        global $mainframe, $option; 
              
        // Check for request forgeries
        JRequest::checkToken() or jexit( 'Invalid Token' );           
         
        // save information
        $model =& $this->getModel( 'Mwc_EmployeeBoard' );          
        $row = $model->getTable();     
        $post = JRequest::get('post');
        $isNew = ($row->id == 0);

        if(!$row->bind( $post )){
            JError::raiseError(500, $row->getError());
        }   
         
        // Get submitted text from the request variables
        $text = JRequest::getVar('description', '', 'post', 'string', JREQUEST_ALLOWRAW); 
        // Clean text for xhtml transitional compliance
        $text = str_replace( '<br>', '<br />', $text);
        $row->description = $text;
        
        if (!$row->check()){
            JError::raiseError(500, $row->getError());
        }   
        if(!$row->store()){
            JError::raiseError(500, $row->getError() );
        }
        $row->checkin();            
       
        switch ($this->_task){
            case 'apply':
                $msg = JText::_( 'Changes to Organization saved' );
                $link = "index.php?option=$option&type=board&task=edit&cid[]={$row->id}";
                break;

            case 'save':
            default:
                $msg = JText::_( 'Organization saved' );
                $link = "index.php?option=$option&type=board";
                break;
        }

        $this->setRedirect($link, $msg);
    }
    
    function cancel(){
        global $mainframe, $option; 
        
        // Check for request forgeries
        JRequest::checkToken() or jexit( 'Invalid Token' );

        $id  = JRequest::getVar( 'id', 0, '', 'int' );        
        $model =& $this->getModel( 'Mwc_EmployeeBoard' );          
        $row = $model->getTable();

        $row->checkin( $id );
        $this->setRedirect( "index.php?option=$option&type=board" );
    }
    
    function publish(){
        global $mainframe, $option;

        // Check for request forgeries
        JRequest::checkToken() or jexit( 'Invalid Token' );

        $db         =& JFactory::getDBO();
        $user       =& JFactory::getUser();   
        $cid        = JRequest::getVar( 'cid', array(), '', 'array' );
        $publish    = ( $this->getTask() == 'publish' ? 1 : 0 );

        JArrayHelper::toInteger($cid); 
        if (count( $cid ) < 1){
            $action = $publish ? 'publish' : 'unpublish';
            JError::raiseError(500, JText::_( 'Select an item to' .$action, true ) );
        }

        $cids = implode( ',', $cid );

        $query = 'UPDATE #__mwc_employee_board'
        . ' SET published = ' . (int) $publish
        . ' WHERE id IN ( '. $cids .' )'
        . ' AND ( checked_out = 0 OR ( checked_out = '.(int) $user->get('id').' ) )'
        ;
        $db->setQuery( $query );
        if (!$db->query()){
            JError::raiseError(500, $db->getErrorMsg() );
        }

        if (count( $cid ) == 1){
            $model =& $this->getModel( 'Mwc_EmployeeBoard' );          
            $row = $model->getTable();
            $row->checkin( $cid[0] );
        }
        
        $this->setRedirect( "index.php?option=$option&type=board" );
        //$mainframe->redirect( "index.php?option=$option&type=board" );
    }
    
    function remove(){
        global $mainframe, $option;
        
        // Check for request forgeries
        JRequest::checkToken() or jexit( 'Invalid Token' );

        $db     =& JFactory::getDBO();
        $cid    = JRequest::getVar( 'cid', array(), '', 'array' );

        JArrayHelper::toInteger($cid);
        $msg = 'Item(s) deleted';
        $model =& $this->getModel( 'Mwc_EmployeeBoard' );
        
        for ($i = 0, $n = count($cid); $i < $n; $i++){                       
            $row = $model->getTable();
            if(!$row->delete( $cid[$i])){
                $msg .= $row->getError();
            }
        }
        
        $this->setRedirect( "index.php?option=$option&type=board", $msg );
    }
}
